package comandos;

import model.Conversacion;
import protocol.MensajeComando;
import ar.unlam.com.cliente.PanelDeChat;
import client.ClienteSession;

public class AgregoConversacion implements ComandoCliente 
{
	private static Conversacion conversacion;
	private static PanelDeChat panel;
	private final Object lock = new Object();
	
	public synchronized void ejecutar (ClienteSession cliente, boolean invocadoPorServidor)
	{
		if (invocadoPorServidor)
		{
			try
			{// Recibo la lista de amigos
				synchronized (lock) {
					AgregoConversacion.conversacion = (Conversacion) cliente.getInput().readObject();
					lock.notify();
				}				
			}catch (Exception e){
				System.out.println(e.getMessage());
			}			
		}else{ 
			try{
				//Envio al servidor una peticion de creacion de usuario
				cliente.getOutput().writeObject(new MensajeComando ("agregar_conversacion",0));
				cliente.getOutput().flush();
				
				//Envio el usuario creador de la conversacion
				cliente.getOutput().writeObject(cliente.getUsuario());
				cliente.getOutput().flush();

				//Creo el objeto conversacion
				AgregoConversacion.conversacion = new Conversacion();				
				AgregoConversacion.conversacion.getUsuarios().addAll(panel.getParticipantes());
				
				//Envio la nueva conversacion				
				cliente.getOutput().writeObject(AgregoConversacion.conversacion);
				cliente.getOutput().flush();			
				
			}catch (Exception e){
				e.printStackTrace();
			}
		}

	}

	public Conversacion getConversacion() throws InterruptedException {
		synchronized (lock) {
			lock.wait();
			return conversacion;
		}			
	}


	public void setConversacion(Conversacion conversacion) {
		AgregoConversacion.conversacion = conversacion;
	}



	public static PanelDeChat getPanel() {
		return panel;
	}



	public static void setPanel(PanelDeChat panel) {
		AgregoConversacion.panel = panel;
	}
		
}
